package dfbz.demo07;

public class Test14 {
    public static void main(String[] args) {
//        int a=10;
//        int b=12;
//        int temp;
//        temp=a;    //将a的值赋给临时变量  temp。  temp=10；
//        a=b;       //将b的值赋给a那么，  a=12；
//        b=temp;     //  最后将temp赋值给b  b=10
//        System.out.println(a);
//        System.out.println(b);
        //（此种方法比较容易理解，不会出现数值上的错误，但是会产生一个新的变量t，对内存空间有一定的浪费。）
//         int a=10;
//         int b=12;
//         a=a+b;
//         b=a-b;   //由于a=a+b;所以这一步执行的效果等同 (a+b)-b ,此时b的值为初始的a;
//         a=a-b;   //由于a=a+b;所以这一步执行的效果等同 (a+b)-a ,此时a的值为初始的b;
//        System.out.println(a);
//        System.out.println(b);
//        //所以在数值较大的时候不建议使用,在a的值和b的值加起来超过对应类型的最大值的时候，则会出现越界的问题。
        int a=10;
        int b=12;
        a=a^b;
        b=a^b;
        a=a^b;
        System.out.println("a="+a);
        System.out.println("b="+b);
        //计算机底层的位运算，但是不会产生新的变量，速度最快，会出现越界的问题,.
        //速度：异或>加减>交换变量
    }
}
